//135. 分发糖果
//n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。
//
//你需要按照以下要求，给这些孩子分发糖果：
//
//每个孩子至少分配到 1 个糖果。
//相邻两个孩子评分更高的孩子会获得更多的糖果。
//请你给每个孩子分发糖果，计算并返回需要准备的 最少糖果数目 。
class Solution {
    public int candy(int[] ratings) {
        int ret=0;
        int[] sum=new int[ratings.length];
        sum[0]=1;
        for(int i=1;i<ratings.length;i++){
            sum[i]=(ratings[i]>ratings[i-1])?sum[i-1]+1:1;
        }//分为左规则和右规则分别进行统计
        for(int j=ratings.length-2;j>=0;j--){
            if(ratings[j]>ratings[j+1])  {
                sum[j]=Math.max(sum[j+1]+1,sum[j]);
            }
        }
        for(int x:sum){
            ret+=x;
        }
        return ret;
    }
}